package InterfaceOffer;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class TencentSolution3 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        //首先输入测试数据的组数
        int T = in.nextInt();
        //规定截止时刻数组
        int[] t;
        //惩罚点数数组
        int[] w;
        for (int i = 0; i < T; i++) {
            // 对于每组数据，首先输入一个正整数n代表游戏数量
            int n = in.nextInt();
            // 然后tj代表规定时刻
            t = new int[n];
            w = new int[n];
            for (int j = 0; j < n; j++) {
                t[j] = in.nextInt();
            }
            // 然后输入wj代表未完成的惩罚点数
            for (int j = 0; j < n; j++) {
                w[j] = in.nextInt();
            }
            // 开始计算最少惩罚点数，每个游戏只需要一个单位时间就可以完成 -> 同一时刻只能完成一个游戏
            // 所以遍历t[j]，如果有相同的数，则完成最大的w[j],剩余的则为扣除分数
            int score = 0;//最终扣除分数初始为0
            Map<Integer, Integer> map = new HashMap();
            for (int j = 0; j < n; j++) {
                // 如果新增的t所对应的w要比原来的小，则不更新map，并将其加入到score中
                if (map.get(t[j]) == null) {
                    map.put(t[j], w[j]);
                } else {
                    if (w[j] < map.get(t[j])) {
                        score += w[j];
                    } else {
                        score += map.get(t[j]);
                        map.put(t[j], w[j]);
                    }
                }
            }
            System.out.println(score);

        }
    }
}
